package com.tgy.MyFlowable.workflow.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ctsi.core.database.entity.Search;
import com.ctsi.workflow.dto.FlwOptionDTO;
import com.ctsi.workflow.entity.FlwOption;
import org.flowable.engine.repository.ProcessDefinition;

import java.util.List;

/**
 * 流程选项配置表 服务类
 *
 * @version 1.0
 * @author: wang xiao xiang
 * @date: 2021/8/6 16:41
 */
public interface IFlwOptionService extends IService<FlwOption> {

    /**
     * 分页业务方法
     *
     * @param search 　搜索参数
     * @return IPage
     */
    IPage<FlwOption> listPage(Search search);

    /**
     * 根据流程定义，添加流程选项
     *
     * @param processDefinition 　流程定义
     */
    void addByProcessDefinition(ProcessDefinition processDefinition);

    /**
     * 流程选项列表
     *
     * @param flwOptionDTO 查询参数
     * @return 选项列表
     */
    List<FlwOption> list(FlwOptionDTO flwOptionDTO);

    /**
     * 根据流程定义id删除流程选项
     *
     * @param id 流程定义id
     */
    void delete(String id);

    /**
     * 根据流程定义id获取标题
     *
     * @param processDefinitionId 流程定义id
     * @return 标题
     */
    String getTitleByProcessDefinitionId(String processDefinitionId);

    /**
     * 根据流程定义id获取是否自动完成第一个任务
     *
     * @param processDefinitionId 流程定义id
     * @return 是否自动完成第一个任务，true是，false否
     */
    boolean getFlowableOptionJumpFirst(String processDefinitionId);

    /**
     * 根据流程定义id获取是否跳过相同处理人
     *
     * @param processDefinitionId 流程定义id
     * @return 是否跳过相同处理人，true是，false否
     */
    boolean getFlowableOptionSmartComplete(String processDefinitionId);
}
